<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Reserva extends CI_Controller {
    
    var $valor_defecto_churro = "____";
    
    function __construct() {
        parent::__construct();
        $this->lang->load('ini_'.$this->config->item('language'), $this->config->item('language'));
    }

    /**
     * Funcion que se llama al pulsar "buscar" en la pagina inicial
     * Aqui se crea el llamado "churro" que contiene los siguientes datos separados por guiones bajos.
     * 
     * Lo insertamos en sesion
     * 
     * Entorno
     * Personas
     * Lugar
     * Fecha Desde
     * Fecha Hasta 
     */
    public function index() {
        $this->load->library('General');
        $cadena = "";
        $entorno = ($this->input->post('p_entorno_playa') == 'S' ? 1 : 0);
        $entorno = ($this->input->post('p_entorno_ciudad') == 'S' ? 2 : $entorno);
        $entorno = ($this->input->post('p_entorno_rural') == 'S' ? 3 : $entorno);
        $entorno = ($this->input->post('p_entorno_nieve') == 'S' ? 4 : $entorno);

        $cadena .= $entorno ."_".
                $this->input->post('p_personas') ."_".
                $this->input->post('p_valores_lugares') ."_".
                $this->general->fec_str_to_ymd($this->input->post('datefrom'), true) ."_".
                $this->general->fec_str_to_ymd($this->input->post('dateto'), true);

        if(!$this->ion_auth->logged_in()){
            $this->session->sess_destroy();
            $this->session->sess_create(); 
        }
        
        $this->session->set_userdata('p_churro', $cadena);
        
        redirect('front/reserva/buscar');
    }
    
    /**
     * Funcion llamada desde el index de esta misma pagina
     * Es la encargada de realizar la busqueda para los parametros seleccionados
     * @param type $parametros Si viene informado traera un churro
     */
    public function buscar($churro = "____"){
        //si viene informado pilla el parametro
        //si no viene informado se busca en la sesion, y si no hay se vuelve a la pagina inicial
        if($this->session->userdata('p_churro') != '' || $churro == "____"){
            $churro = $this->session->userdata('p_churro');
        }else{
            redirect();
        }
        $this->load->model('producto_model');
        $this->load->library('Controlador');

        //paginacion
        $pages = 10; //Numero de registros mostrados por páginas
        $this->load->library('pagination'); //Cargamos la librería de paginación
        $config['base_url'] = site_url('busqueda/index'); // parametro base de la aplicación, si tenemos un .htaccess nos evitamos el index.php
        $config['per_page'] = $pages; 
        $config['num_links'] = 3; //Numero de links mostrados en la paginación

        $data['productos'] = $this->producto_model->buscar($config['per_page'], $this->uri->segment(5), $churro);
        $config['uri_segment'] = 5;
        $config['total_rows'] = $data['productos']->num_rows();
        $config['full_tag_open'] = "<ul class='pagination'>";
        $config['full_tag_close'] = "</ul>";
        $config['next_tag_open'] = "<li class='next'>";
        $config['next_tag_close'] = "</li>";
        $config['prev_tag_open'] = "<li class='prev'>";
        $config['prev_tag_close'] = "</li>";
        $config['cur_tag_open'] = '<li class="active"><a href="#">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';
        
        $this->pagination->initialize($config); 
        //fin paginacion
        
        $data['datos_tags'] = $this->producto_model->getUltimasProvinciasConReserva();
        $data['ruta_template'] = RUTA_TEMPLATE;
        $data['ruta'] = site_url().RUTA_TEMPLATE;
        $data['title'] = TITLES . lang('title_resultado').": ".$data['productos']->num_rows()." ".lang('resultados');
        
        $arr = explode("_", $churro);
        
        $data['buscador'] = $this->get_buscador($arr, $this->valores_busqueda($arr));
        
        $data['contenido'] = $this->load->view('resultado', $data, true);
        $this->load->view('index', $data);
    }
    
    /**
     * Funcion para ver un producto concreto
     * 
     * @param type $producto
     * @param type $churro 
     */
    function ver($producto = '', $churro = "____"){
        if($this->session->userdata('p_churro') != ''){
            $churro = $this->session->userdata('p_churro');
        }
        
        $this->lang->load('producto_'.$this->config->item('language'), $this->config->item('language'));
        $this->lang->load('distancia_'.$this->config->item('language'), $this->config->item('language'));
        $this->lang->load('distribucion_'.$this->config->item('language'), $this->config->item('language'));
        
        $this->load->model('producto_model');
        $this->load->library('Controlador');
        $this->load->library('General');

        $this->general->insert_ip_visitor($producto);
        
        $arr = explode("_", $churro);
        $data['suma_tarifa'] = $this->producto_model->get_suma_tarifas($producto, $arr[3], $arr[4]);
        $data['ses'] = $this->valores_busqueda($arr);

        $data['row_producto'] = $this->producto_model->getProductos(null, $producto)->row_array();
        $data['comentario'] = $this->producto_model->get_comentarios($producto, 'PRO');
        $data['row_usuario'] = $this->producto_model->get_info_usuario($producto)->row_array();
        $query_productos_usuario = $this->producto_model->get_productos_usuario($data['row_usuario']['id'], $producto);
        $array_direcciones = array();
        foreach ($query_productos_usuario->result_array() as $value){
            $array_direcciones[] = array($value['id'], $value['barrio']." ".lang('en')." ".$value['nombre']);
        }
        $data['direcciones'] = $array_direcciones;
        $data['foto'] = $this->producto_model->getFoto($producto);
        $data['distancias'] = $this->controlador->get_datos_producto('DISTANCIA', $producto);
        $data['distribucion'] = $this->controlador->get_datos_producto('DISTRIBUCION', $producto);
        $data['detalle'] = $this->controlador->get_datos_producto('DETALLE', $producto);
        $data['contenidos'] = $this->controlador->get_datos_producto('CONTENIDO', $producto);
        $data['municipio'] = $this->producto_model->getMunicipio($data['row_producto']['fk_id_provincia'], $data['row_producto']['fk_id_municipio']);
        $data['ruta'] = site_url().RUTA_TEMPLATE;
        $data['ruta_foto'] = 'assets/uploads/' . $data['foto']->row()->empresa . '/' . $data['foto']->row()->producto;
        
        $data['googlemaps_javascript'] = true;

        $data['title'] = TITLES . lang('title_ver') . " ". $data['row_producto']['descripcion'];
        $data['contenido'] = $this->load->view('producto_ver', $data, true);
        $this->load->view('index', $data);
    }
    
    function valores_busqueda($arr = null){
        $data = array();
        $data['p_entorno'] = (count($arr) > 0) ? $arr[0] : null;
        $data['p_personas'] = (count($arr) > 0) ? $arr[1] : null;
        $data['p_valores_lugares'] = (count($arr) > 0) ? $arr[2] : null;
        $data['p_datefrom'] = (count($arr) > 0) ? $this->general->fec_ymd_to_str($arr[3]) : null;
        $data['p_dateto'] = (count($arr) > 0) ? $this->general->fec_ymd_to_str($arr[4]) : null;
        return $data;
    }
    
    public function get_map($producto = null, $descripcion = null, $echo_o_return = 'return'){
        if($this->input->post('echo_o_return') != ''){
            $producto = $this->input->post('producto');
            $descripcion = $this->input->post('descripcion');
            $echo_o_return = $this->input->post('echo_o_return');
            $this->load->library('Controlador');
            $this->load->model('producto_model');
        }
        $this->load->library('Googlemaps');
        $config['center_address'] = $this->controlador->get_datos_producto('DIRECCION_GMAPS', $producto);
        $config['placesRadius'] = 200; 
        $config['zoom'] = '16';
        $this->googlemaps->initialize($config);
        $marker = array();
        $marker['address'] = $this->controlador->get_datos_producto('DIRECCION_GMAPS', $producto);
        $marker['infowindow_content'] = "<b>".$descripcion."</b><br/><br/>".$config['center_address'];
        $marker['infowindow_open'] = true;
        $this->googlemaps->add_marker($marker);
        if($echo_o_return == 'return'){
            return $this->googlemaps->create_map();
        }else{
            $var = $this->googlemaps->create_map();
            echo $this->load->view('mapa', $var, true);
        }
    }
    
    function get_buscador($arr = null, $valores_sesion = null){
        $this->load->model('inicio_model');
        $data_buscador['lugares'] = form_dropdown('p_lugares', $this->inicio_model->getLugares(), explode(",", $arr[2]), 'id="p_lugares" style="display:none;" multiple="multiple"');
        $data_buscador['ses'] = $valores_sesion;
        return $this->load->view('buscador', $data_buscador, true);
    }
    
    function cambiar_datos_reserva(){
        $this->load->library('General');
        $cadena = "_".$this->input->post('p_personas') ."__".
                $this->general->fec_str_to_ymd($this->input->post('datefrom'), true) ."_".
                $this->general->fec_str_to_ymd($this->input->post('dateto'), true);

        if(!$this->ion_auth->logged_in()){
            $this->session->sess_destroy();
            $this->session->sess_create(); 
        }
        
        $this->session->set_userdata('p_churro', $cadena);
        
        redirect('front/reserva/ver/'.$this->input->post('p_producto'));
    }
    
    public function reservar($producto = null){
        $this->load->library('General');
        $this->load->model('producto_model');
        $this->lang->load('producto_'.$this->config->item('language'), $this->config->item('language'));
        
        $arr = explode("_", $this->session->userdata('p_churro'));
        $data['ruta'] = site_url().RUTA_TEMPLATE;
        $data['row_producto'] = $this->producto_model->getProductos(null, $producto)->row_array();
        $data['suma_tarifa'] = $this->producto_model->get_suma_tarifas($producto, $arr[3], $arr[4]);
        $data['ses'] = $this->valores_busqueda($arr);
        
        $data['title'] = TITLES . lang('title_reservar') . " ". $data['row_producto']['descripcion'];
        $data['contenido'] = $this->load->view('reservar', $data, true);
        $this->load->view('index', $data);
    }
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */